Compare commits
3 Commits
b7a952ee81
..
v9.6.0
| Author | SHA1 | Date | |
|---|---|---|---|
| 21683f5e8b | |||
| 2874ea78c4 | |||
| d5558b61b2 |
@@ -2,6 +2,6 @@ export class AvailabilityInfo {
|
|||||||
public user: string;
|
public user: string;
|
||||||
public loggedIn: boolean;
|
public loggedIn: boolean;
|
||||||
public extension: string;
|
public extension: string;
|
||||||
public lastStamp: string;
|
public lastStamp: Date;
|
||||||
public firma: boolean;
|
public atCompany: boolean;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,7 +33,11 @@ export class AvailabilityService {
|
|||||||
try {
|
try {
|
||||||
var response = await GM_fetch(Config.tapi_server_url + '/availability')
|
var response = await GM_fetch(Config.tapi_server_url + '/availability')
|
||||||
if (response.status === 200) {
|
if (response.status === 200) {
|
||||||
this._availabilities = await response.json() as AvailabilityInfo[]
|
var raw = await response.json() as AvailabilityInfo[]
|
||||||
|
this._availabilities = raw.map(a => ({
|
||||||
|
...a,
|
||||||
|
lastStamp: a.lastStamp ? new Date(a.lastStamp) : null,
|
||||||
|
}))
|
||||||
this._listeners.forEach(l => l(this._availabilities))
|
this._listeners.forEach(l => l(this._availabilities))
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
|||||||
@@ -67,13 +67,13 @@ export class Availability {
|
|||||||
var dotClass = entry.loggedIn ? 'tapi-dot-on' : 'tapi-dot-off'
|
var dotClass = entry.loggedIn ? 'tapi-dot-on' : 'tapi-dot-off'
|
||||||
var time = ''
|
var time = ''
|
||||||
if (entry.lastStamp) {
|
if (entry.lastStamp) {
|
||||||
var d = new Date(entry.lastStamp)
|
|
||||||
var pad = (n: number) => n.toString().padStart(2, '0')
|
var pad = (n: number) => n.toString().padStart(2, '0')
|
||||||
|
var d = entry.lastStamp
|
||||||
time = pad(d.getDate()) + '.' + pad(d.getMonth() + 1) + '. ' + pad(d.getHours()) + ':' + pad(d.getMinutes())
|
time = pad(d.getDate()) + '.' + pad(d.getMonth() + 1) + '. ' + pad(d.getHours()) + ':' + pad(d.getMinutes())
|
||||||
}
|
}
|
||||||
var location = ''
|
var location = ''
|
||||||
if (entry.loggedIn) {
|
if (entry.loggedIn) {
|
||||||
location = entry.firma ? ' · Büro' : ' · Home'
|
location = entry.atCompany ? ' · Büro' : ' · Home'
|
||||||
}
|
}
|
||||||
indicator.innerHTML = '<span class="tapi-dot ' + dotClass + '"></span><small>' + time + location + '</small>'
|
indicator.innerHTML = '<span class="tapi-dot ' + dotClass + '"></span><small>' + time + location + '</small>'
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,6 +14,8 @@ namespace CPATapi.Client.Models
|
|||||||
{
|
{
|
||||||
/// <summary>Stores additional data not described in the OpenAPI description found when deserializing. Can be used for serialization as well.</summary>
|
/// <summary>Stores additional data not described in the OpenAPI description found when deserializing. Can be used for serialization as well.</summary>
|
||||||
public IDictionary<string, object> AdditionalData { get; set; }
|
public IDictionary<string, object> AdditionalData { get; set; }
|
||||||
|
/// <summary>The atCompany property</summary>
|
||||||
|
public bool? AtCompany { get; set; }
|
||||||
/// <summary>The extension property</summary>
|
/// <summary>The extension property</summary>
|
||||||
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
|
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
|
||||||
#nullable enable
|
#nullable enable
|
||||||
@@ -22,6 +24,8 @@ namespace CPATapi.Client.Models
|
|||||||
#else
|
#else
|
||||||
public string Extension { get; set; }
|
public string Extension { get; set; }
|
||||||
#endif
|
#endif
|
||||||
|
/// <summary>The lastStamp property</summary>
|
||||||
|
public DateTimeOffset? LastStamp { get; set; }
|
||||||
/// <summary>The loggedIn property</summary>
|
/// <summary>The loggedIn property</summary>
|
||||||
public bool? LoggedIn { get; set; }
|
public bool? LoggedIn { get; set; }
|
||||||
/// <summary>The user property</summary>
|
/// <summary>The user property</summary>
|
||||||
@@ -57,7 +61,9 @@ namespace CPATapi.Client.Models
|
|||||||
{
|
{
|
||||||
return new Dictionary<string, Action<IParseNode>>
|
return new Dictionary<string, Action<IParseNode>>
|
||||||
{
|
{
|
||||||
|
{ "atCompany", n => { AtCompany = n.GetBoolValue(); } },
|
||||||
{ "extension", n => { Extension = n.GetStringValue(); } },
|
{ "extension", n => { Extension = n.GetStringValue(); } },
|
||||||
|
{ "lastStamp", n => { LastStamp = n.GetDateTimeOffsetValue(); } },
|
||||||
{ "loggedIn", n => { LoggedIn = n.GetBoolValue(); } },
|
{ "loggedIn", n => { LoggedIn = n.GetBoolValue(); } },
|
||||||
{ "user", n => { User = n.GetStringValue(); } },
|
{ "user", n => { User = n.GetStringValue(); } },
|
||||||
};
|
};
|
||||||
@@ -69,7 +75,9 @@ namespace CPATapi.Client.Models
|
|||||||
public virtual void Serialize(ISerializationWriter writer)
|
public virtual void Serialize(ISerializationWriter writer)
|
||||||
{
|
{
|
||||||
if(ReferenceEquals(writer, null)) throw new ArgumentNullException(nameof(writer));
|
if(ReferenceEquals(writer, null)) throw new ArgumentNullException(nameof(writer));
|
||||||
|
writer.WriteBoolValue("atCompany", AtCompany);
|
||||||
writer.WriteStringValue("extension", Extension);
|
writer.WriteStringValue("extension", Extension);
|
||||||
|
writer.WriteDateTimeOffsetValue("lastStamp", LastStamp);
|
||||||
writer.WriteBoolValue("loggedIn", LoggedIn);
|
writer.WriteBoolValue("loggedIn", LoggedIn);
|
||||||
writer.WriteStringValue("user", User);
|
writer.WriteStringValue("user", User);
|
||||||
writer.WriteAdditionalData(AdditionalData);
|
writer.WriteAdditionalData(AdditionalData);
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"descriptionHash": "3ADB4B190A2637B9EC01981B2508C539F2A582D95310D01FF97D2F2C068B9024CDC66F4D14F486265ED22314E9EEB2EA7CD3BF0F3D1ECC061BA7B9734B520A9D",
|
"descriptionHash": "DEDF4FD053830F062E3DE69918EF38C90DCD76DC47BB854DDA337BB592E2A34DFAAAC5F0C23D40481BD2883833366E7AAC243D825DBCCE2897E4E6A78B890BE9",
|
||||||
"descriptionLocation": "../CPATapi.Server/CPATapi.Server.json",
|
"descriptionLocation": "../CPATapi.Server/CPATapi.Server.json",
|
||||||
"lockFileVersion": "1.0.0",
|
"lockFileVersion": "1.0.0",
|
||||||
"kiotaVersion": "1.30.0",
|
"kiotaVersion": "1.30.0",
|
||||||
|
|||||||
@@ -13,6 +13,6 @@ public class Availability
|
|||||||
public string? US_EXTENSION { get; set; }
|
public string? US_EXTENSION { get; set; }
|
||||||
[JsonPropertyName("lastStamp")]
|
[JsonPropertyName("lastStamp")]
|
||||||
public DateTime? LAST_STAMP { get; set; }
|
public DateTime? LAST_STAMP { get; set; }
|
||||||
[JsonPropertyName("firma")]
|
[JsonPropertyName("atCompany")]
|
||||||
public bool? FIRMA { get; set; }
|
public bool? AT_COMPANY { get; set; }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ internal class ZeitConsensRepository(IConfiguration config) : Repository(config)
|
|||||||
,bu.LOGGED_IN
|
,bu.LOGGED_IN
|
||||||
,us.US_EXTENSION
|
,us.US_EXTENSION
|
||||||
,buLast.LAST_STAMP
|
,buLast.LAST_STAMP
|
||||||
,buLast.FIRMA
|
,buLast.AT_COMPANY
|
||||||
FROM dbo.MA_DATEN ma
|
FROM dbo.MA_DATEN ma
|
||||||
INNER JOIN projectmanagement.dbo.CP_USER us ON us.US_LOGINNAME = ma.MA_USER_NAME
|
INNER JOIN projectmanagement.dbo.CP_USER us ON us.US_LOGINNAME = ma.MA_USER_NAME
|
||||||
OUTER APPLY (
|
OUTER APPLY (
|
||||||
@@ -24,7 +24,7 @@ internal class ZeitConsensRepository(IConfiguration config) : Repository(config)
|
|||||||
OUTER APPLY (
|
OUTER APPLY (
|
||||||
SELECT TOP 1
|
SELECT TOP 1
|
||||||
bu.BU_BU AS LAST_STAMP
|
bu.BU_BU AS LAST_STAMP
|
||||||
,CASE WHEN bu.BU_TERM = 'Zeiterfassung' THEN 1 ELSE 0 END AS FIRMA
|
,CASE WHEN bu.BU_TERM = 'Zeiterfassung' THEN 1 ELSE 0 END AS AT_COMPANY
|
||||||
FROM dbo.BU bu
|
FROM dbo.BU bu
|
||||||
WHERE bu.BU_MA_NR = ma.MA_NR
|
WHERE bu.BU_MA_NR = ma.MA_NR
|
||||||
ORDER BY bu.BU_BU DESC
|
ORDER BY bu.BU_BU DESC
|
||||||
|
|||||||
Reference in New Issue
Block a user