ItemModel.h 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. //
  2. // ItemModel.h
  3. // kneet
  4. //
  5. // Created by Jason Lee on 4/1/15.
  6. // Copyright (c) 2015 ntels. All rights reserved.
  7. //
  8. #import "JDJSONModel.h"
  9. typedef NS_ENUM(NSInteger, CmdClsType) {
  10. CmdClsTypeFirmwareVersion = 0,
  11. CmdClsTypeSwitchBinary, //1
  12. CmdClsTypeSwitchMultiLevel,
  13. CmdClsTypeSwitchColor,
  14. CmdClsTypeSensorBinary,
  15. CmdClsTypeSensorMultiLevel, //5
  16. CmdClsTypeThermostatMode,
  17. CmdClsTypeThermostatFanMode,
  18. CmdClsTypeThermostatSetPoint, //hold
  19. CmdClsTypeLock,
  20. CmdClsTypeMeterCurrent,
  21. CmdClsTypeMeterTotal,
  22. CmdClsTypeAVControlPlayback, //12
  23. CmdClsTypeHomeMode,
  24. CmdClsTypeSpeedControl,
  25. CmdClsTypeMeterCurrentForDAWON, //17
  26. CmdClsTypeMeterTotalForDAWON,
  27. CmdClsTypeValve,
  28. CmdClsTypeBattery,
  29. CmdClsTypeDeviceStatus, //21
  30. CmdClsTypePresence,
  31. CmdClsTypeSystem
  32. };
  33. #define ksItemSubTypeCodeDevice @"01"
  34. #define ksItemSubTypeCodeMode @"02"
  35. #define ksItemSubTypeCodeAppPush @"03"
  36. #define ksItemSubTypeCodeTimer @"05"
  37. #define ksItemSubTypeCodeGeoFencing @"06"
  38. #define ksItemTypeCodeTrigger @"01"
  39. #define ksItemTypeCodeAction @"02"
  40. #define ksItemTypeCodeCondition @"03"
  41. #define ksConditionSubTypeCodeDueDate @"21"
  42. #define ksConditionSubTypeCodeDaysOfWeek @"22"
  43. #define ksConditionSubTypeCodeDueTime @"23"
  44. #define ksConditionSubTypeCodeHomeMode @"02"
  45. #define ksConditionSubTypeCodeExternHeat @"31"
  46. @protocol ItemModel;
  47. @protocol ItemSubModel;
  48. @protocol ModeModel;
  49. @protocol DeviceModel;
  50. @protocol CmdClsValueModel;
  51. @interface CmdClsValueModel : JDJSONModel
  52. @property (copy, nonatomic) NSString *cmdclsValue;
  53. @property (copy, nonatomic) NSString *cmdclsValueMsg;
  54. @property (assign, nonatomic) BOOL isSelected;
  55. //local
  56. @property (strong, nonatomic) NSString *localizedCmdClsValueMsg;
  57. @end
  58. @interface ItemSubModel : JDJSONModel {//subCondition
  59. @protected
  60. NSString *_cmdclsTypeId;
  61. NSString *_cmdclsValueMsg;
  62. NSArray<CmdClsValueModel> *_cmdclsValueList;
  63. }
  64. //@property (copy, nonatomic) NSString *itemSubTypeCode;
  65. @property (copy, nonatomic) NSString *subSequence;
  66. @property (copy, nonatomic) NSString *sourceId;
  67. @property (copy, nonatomic) NSString *sourceSubId;
  68. @property (copy, nonatomic) NSString *conditionTypeCode;
  69. @property (copy, nonatomic) NSString *sourceName;
  70. @property (copy, nonatomic) NSString *sourceSubName;
  71. @property (copy, nonatomic) NSString *actionTypeCode;
  72. @property (copy, nonatomic) NSString *cmdclsCode;
  73. @property (assign, nonatomic) CmdClsType cmdclsType;
  74. @property (copy, nonatomic) NSString *cmdclsTypeId;
  75. @property (copy, nonatomic) NSString *cmdclsTypeName;
  76. @property (copy, nonatomic) NSString *cmdclsTypeSystemName;
  77. @property (copy, nonatomic) NSString *cmdclsValue;
  78. @property (copy, nonatomic) NSString *cmdclsValueMsg;
  79. @property (copy, nonatomic) NSString *onlineState;
  80. //predefine devices property
  81. @property (copy, nonatomic) NSString *controlMinValue;
  82. @property (copy, nonatomic) NSString *controlMaxValue;
  83. @property (copy, nonatomic) NSString *controlStep;
  84. @property (copy, nonatomic) NSString *unit;
  85. @property (copy, nonatomic) NSString *dataTypeCode;
  86. @property (copy, nonatomic) NSString *deleteYn;
  87. @property (copy, nonatomic) NSString *imageFileName;
  88. @property (copy, nonatomic) NSString *hour;
  89. @property (copy, nonatomic) NSString *minute;
  90. @property (copy, nonatomic) NSString *nickname;
  91. @property (copy, nonatomic) NSString *predCmdclsValue;
  92. @property (strong, nonatomic) NSMutableArray<ItemModel> *conditions;
  93. @property (copy, nonatomic) NSArray<CmdClsValueModel> *cmdclsValueList;
  94. @property (assign, nonatomic, readonly) NSInteger cmdclsValueMsgLength;
  95. @property (strong, nonatomic) NSString<Ignore> *cmdclsValueMsgLongest;
  96. //flash
  97. @property (copy, nonatomic) NSString<Ignore> *dueDate;
  98. @property (copy, nonatomic) NSString<Ignore> *daysOfWeek;
  99. @property (copy, nonatomic) NSString<Ignore> *dueTime;
  100. @property (copy, nonatomic) NSString<Ignore> *homeModes;
  101. @property (copy, nonatomic) NSString<Ignore> *externHeat;
  102. //- (NSString *)cmdclsValueMsg:(NSString *)cmdclsValue;
  103. @end
  104. @protocol PredefinedDeviceModel;
  105. @interface ItemModel : JDJSONModel //condition
  106. @property (copy, nonatomic) NSString *predItemSequence;
  107. @property (copy, nonatomic) NSString *itemTypeCode;
  108. @property (copy, nonatomic) NSString *itemSubTypeCode;
  109. @property (copy, nonatomic) NSString *itemName;
  110. @property (copy, nonatomic) NSString *predRuleId;
  111. @property (copy, nonatomic) NSString *predSceneId;
  112. @property (copy, nonatomic) NSString *predActionSequence;
  113. @property (copy, nonatomic) NSString *cnt;
  114. @property (copy, nonatomic) NSString *totalCnt;
  115. @property (copy, nonatomic) NSString *imageFileName;
  116. @property (copy, nonatomic) NSString *sourceId;
  117. @property (copy, nonatomic) NSString *sourceName;
  118. @property (copy, nonatomic) NSString *imageFileViewName;
  119. @property (strong, nonatomic) NSMutableArray<ItemSubModel> *subItems;
  120. //for register
  121. @property (strong, nonatomic) NSMutableArray<PredefinedDeviceModel> *predDevices;
  122. @property (strong, nonatomic) NSMutableArray<ModeModel> *modes;
  123. @property (strong, nonatomic) NSMutableArray<ItemSubModel> *pushes;
  124. @property (strong, nonatomic) NSMutableArray<ItemSubModel> *timers;
  125. @property (strong, nonatomic) NSMutableArray<DeviceModel> *mobileDevices;
  126. //fuction
  127. @property (assign, nonatomic, readonly) NSInteger sumPredDeviceCount;
  128. @property (assign, nonatomic, readonly) NSInteger sumModesCount;
  129. @property (assign, nonatomic, readonly) NSInteger sumPushesCount;
  130. + (NSString *)itemSubTypeString:(NSString *)itemSubTypeCode;
  131. @end
  132. @interface ItemListModel : JDJSONModel
  133. @property (copy, nonatomic) NSMutableArray<ItemModel> *list;
  134. @end
  135. @interface ItemSubListModel : JDJSONModel
  136. @property (copy, nonatomic) NSMutableArray<ItemSubModel> *list;
  137. @end