d
This commit is contained in:
@@ -7,8 +7,8 @@ model:
|
||||
|
||||
service:
|
||||
actions:
|
||||
shouldDeliverActivityDates: Bus.deliver(K.activityDate, v);/**/print("ИГР Mic.shouldDAD:'\(v)'")
|
||||
shouldResetActivityDates: Bus.send(K.activityDates, v);/**/print("ИГР Mic.shouldRAD:'\(v)'")
|
||||
shouldDeliverActivityDates: Bus.deliver(K.activityDate, v)
|
||||
shouldResetActivityDates: Bus.send(K.activityDates, v)
|
||||
|
||||
pipes:
|
||||
activeIds: [recent, K.activeIds]
|
||||
|
||||
@@ -83,12 +83,12 @@ extension Mic {
|
||||
ctrl.m
|
||||
.compactMap { shouldDeliverActivityDates($0) }
|
||||
.receive(on: DispatchQueue.main)
|
||||
.sink { v in Bus.deliver(K.activityDate, v);/**/print("ИГР Mic.shouldDAD:'\(v)'") }
|
||||
.sink { v in Bus.deliver(K.activityDate, v) }
|
||||
.store(in: &service.subscriptions)
|
||||
ctrl.m
|
||||
.compactMap { shouldResetActivityDates($0) }
|
||||
.receive(on: DispatchQueue.main)
|
||||
.sink { v in Bus.send(K.activityDates, v);/**/print("ИГР Mic.shouldRAD:'\(v)'") }
|
||||
.sink { v in Bus.send(K.activityDates, v) }
|
||||
.store(in: &service.subscriptions)
|
||||
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ public extension Mic {
|
||||
public static let activityDate = "Mic.activityDate"
|
||||
public static let activityDates = "Mic.activityDates"
|
||||
public static let isActive = "Mic.isActive"
|
||||
public static let MI = "Mic.Model.Item"
|
||||
public static let MI = "MicItem.Model"
|
||||
public static let requestActivityDate = "Mic.requestActivityDate"
|
||||
public static let timeout = "Mic.timeout"
|
||||
}
|
||||
|
||||
@@ -1,4 +1,11 @@
|
||||
public extension MicItem {
|
||||
/// Следует задать активность элемента
|
||||
///
|
||||
/// Условия:
|
||||
/// 1. Пришла актуальная дата завершения активности
|
||||
/// 2. Таймер сообщил о завершении активности
|
||||
///
|
||||
/// - Returns: Состояние активности элемента
|
||||
static func shouldResetActivity(_ c: MicItemContext) -> Bool? {
|
||||
if
|
||||
c.activityDate.isRecent,
|
||||
@@ -15,6 +22,12 @@ public extension MicItem {
|
||||
return nil
|
||||
}
|
||||
|
||||
/// Следует задать время истечения активности
|
||||
///
|
||||
/// Условия:
|
||||
/// 1. Пришла актуальная дата завершения активности
|
||||
///
|
||||
/// - Returns: Время истечения активности
|
||||
static func shouldResetTimeout(_ c: MicItemContext) -> TimeInterval? {
|
||||
if
|
||||
c.activityDate.isRecent,
|
||||
|
||||
@@ -3,7 +3,7 @@ import SwiftUI
|
||||
|
||||
extension MicItem {
|
||||
public struct V: View {
|
||||
var id: String?
|
||||
let id: String?
|
||||
@StateObject var holder = BusUI.Holder()
|
||||
@StateObject var isActive = BusUI.Value(K.isActive, false)
|
||||
|
||||
@@ -11,13 +11,12 @@ extension MicItem {
|
||||
self.id = id
|
||||
}
|
||||
|
||||
func config(_ id: String? = nil) {
|
||||
/**/print("ИГР MicIV.config id: '\(id)'")
|
||||
func configure(_ id: String? = nil) {
|
||||
isActive.id = id
|
||||
holder.items = [
|
||||
Bus.Delay(shouldResetTimeout, K.MI, K.timeout, id),
|
||||
Bus.Sync(shouldResetActivity, K.MI, K.isActive, id),
|
||||
MicItem.Controller(id)
|
||||
MicItem.Controller(id),
|
||||
]
|
||||
// Запрашиваем актуальные данные при (пере)создании.
|
||||
Bus.send(K.requestActivityDate, id)
|
||||
@@ -31,8 +30,8 @@ extension MicItem {
|
||||
width: isActive.v ? 3 : 1
|
||||
)
|
||||
.animation(.easeInOut(duration: 0.3))
|
||||
.onAppear { self.config(id) }
|
||||
.onChange(of: id) { id in self.config(id) }
|
||||
.onAppear { self.configure(id) }
|
||||
.onChange(of: id) { id in self.configure(id) }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,7 +20,6 @@ extension MicItem {
|
||||
if let id {
|
||||
sid = " : \(id)"
|
||||
}
|
||||
/**/print("MicIC.init\(sid)")
|
||||
super.init(
|
||||
MicItem.Model(),
|
||||
debugClassName: "MicICtrl",
|
||||
|
||||
55
Utilities/_platform/2/generate
Executable file
55
Utilities/_platform/2/generate
Executable file
@@ -0,0 +1,55 @@
|
||||
#!/usr/bin/env python3
|
||||
import os
|
||||
import sys
|
||||
from argparse import ArgumentParser
|
||||
from generation.generateStructure import *
|
||||
from generation.shortenName import *
|
||||
from generation.Result import *
|
||||
from parsing.parseLines import *
|
||||
from parsing.Structure import *
|
||||
|
||||
DIR = os.path.dirname(os.path.realpath(sys.argv[0]))
|
||||
|
||||
# Импорт из общей для всех генераторов директории.
|
||||
sys.path.append(f"{DIR}/../common")
|
||||
from modulePaths import *
|
||||
from readFile import *
|
||||
|
||||
parser = ArgumentParser(prog='generate v2')
|
||||
parser.add_argument('module', type=str,
|
||||
help='the name of the module to generate')
|
||||
parser.add_argument('-i', '--input', type=str,
|
||||
help='The path and name of the input file')
|
||||
parser.add_argument('-o', '--output', type=str,
|
||||
help='The path of the output files')
|
||||
parser.add_argument('-s', '--source', type=str,
|
||||
help='The path of the source files')
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
(PATH, MODULE) = modulePaths(args.module)
|
||||
|
||||
print(f"Generating platform for module '{PATH}'...")
|
||||
|
||||
FILE_IN = args.input or f"{DIR}/../../../Modules/{PATH}/{MODULE}.yml"
|
||||
DIR_OUT = args.output or f"{DIR}/../../../Modules/{PATH}/src/"
|
||||
FILE_OUT = os.path.join(DIR_OUT, f"{MODULE}.Generated.swift")
|
||||
FILE_OUT_V1 = os.path.join(DIR_OUT, f"{MODULE}.SectionGenerated.swift")
|
||||
MODULE_SRC = args.source or f"{DIR}/../../../Modules/{PATH}/src"
|
||||
|
||||
# Удаляем первую версию генерированного файла при его наличии.
|
||||
if os.path.isfile(FILE_OUT_V1):
|
||||
os.remove(FILE_OUT_V1)
|
||||
|
||||
# Читаем файл и разбираем его на ключи-значения.
|
||||
lines = readFile(FILE_IN)
|
||||
structure = Structure()
|
||||
parseLines(lines, structure)
|
||||
|
||||
# Генерируем код.
|
||||
result = Result(DIR, PATH, MODULE, readFile, shortenName, MODULE_SRC, structure)
|
||||
generateStructure(result)
|
||||
|
||||
# Сохраняем файл.
|
||||
with open(FILE_OUT, "w") as file:
|
||||
file.write(result.file)
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user